最適化アルゴリズムの性能の良し悪しを決めるために,テスト関数 (ベンチマーク関数) が用いられる.テスト関数は,探索の範囲が設定され,最小値 (最適値) が既知であるような関数である.
この資料では,最適化アルゴリズムの評価に用いるテスト関数をプロットする.テスト関数としては,英語版の Wikipedia[1] に載っているものを用いる.
[1]: Test functions for optimization (en:Wikipedia), Accessed on 2021/09/09.
########## Packages ##########
import numpy as np
from lib.lib import Test_function
from lib.plot import Plot_func
##############################
##### instance of the class #####
test = Test_function()
pf = Plot_func()
#################################
##### Plot #####
x = np.linspace(-5.12, 5.12, 100)
y = np.linspace(-5.12, 5.12, 100)
pf.plotly_surface_contour(func=test.rastrigin,
x_range=x, y_range=y, func_name="rastrigin")
################
##### Plot #####
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
pf.plotly_surface_contour(func=test.ackley,
x_range=x, y_range=y, func_name="ackley")
################
#### Plot #####
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
pf.plotly_surface_contour(func=test.sphere,
x_range=x, y_range=y, func_name="sphere")
###############
#### Plot #####
x = np.linspace(-0.5, 1.25, 100)
y = np.linspace(-0.5, 1.25, 100)
pf.plotly_surface_contour(func=test.rosenbrock,
x_range=x, y_range=y, func_name="rosenbrock")
###############
#### Plot #####
x = np.linspace(-4.5, 4.5, 100)
y = np.linspace(-4.5, 4.5, 100)
pf.plotly_surface_contour(func=test.beale, x_range=x, y_range=y, func_name="beale")
###############
#### Plot #####
x = np.linspace(-2, 2, 100)
y = np.linspace(-2, 2, 100)
pf.plotly_surface_contour(func=test.goldstein_price,
x_range=x, y_range=y, func_name="goldstein_price")
###############
#### Plot #####
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
pf.plotly_surface_contour(func=test.booth,
x_range=x, y_range=y, func_name="booth")
###############
#### Plot #####
x = np.linspace(-15, 5, 100)
y = np.linspace(-3, 3, 100)
pf.plotly_surface_contour(func=test.bukin,
x_range=x, y_range=y, func_name="bukin")
###############
#### Plot #####
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
pf.plotly_surface_contour(func=test.matyas,
x_range=x, y_range=y, func_name="matyas")
###############
#### Plot #####
x = np.linspace(-10, 10, 100)
y = np.linspace(-10, 10, 100)
pf.plotly_surface_contour(func=test.levi,
x_range=x, y_range=y, func_name="levi")
###############